<?php

	/**
	 * 分类 管理模型
	 */
	class CategoryModel extends Model{
		
		public $validate = array(
			array('cname','nonull','分类标题必须填写',2,3),
			array('cname','user:1,20','分类标题必须为1-20个字符',2,3),
			array('ctitle','nonull','分类标题必须填写',2,3),
			array('ctitle','user:1,60','分类标题必须为1-60个字符',2,3),
			array('ckeywords','nonull','分类关键字必须填写',2,3),
			array('ckeywords','user:1,255','分类关键字必须为1-255个字符',2,3),
			array('cdes','nonull','分类描述必须填写',2,3),
			array('cdes','user:1,255','分类描述必须为1-255个字符',2,3),
			array('csort','num:1,65535','分类排序必须是数字1-65535',2,3),
			
			
		);	
		
		/**
		 * 更新一个分类信息
		 */
		public function updateCate($data){
		 	//将数据压入create方法中进行进行自动完成和自动验证
		 	if($this->create($data)){
//		 		var_dump($this->data);die; 		
		 		//先检测是否存在如果不存在那么再添加到数据库中
//		 		$result = $this->where("cname={$this->data['cname']}")->find();
				if($this->save($this->data)){
					return true;
				}else{
					return false;
				}		
		 	}else{
		 		//如果添加数据失败直接返回错误失败原因
		 		
		 		return false;
		 	}
		}
		
		
		
		 /**
			 * 将分类添加到数据库中
			 * 'cname' => string '' (length=0)
			 'pid' => string '0' (length=1)
			 'ctitle' => string '' (length=0)
			 'ckeywords' => string '' (length=0)
			 'cdes' => string '' (length=0)
			 'csort' => string '100' (length=3)
			 'htmldir' => string '' (length=0)
			 'is_listhtml' => string '0' (length=1)
			 'is_archtml' => string '0' (length=1)
			 'is_show' => string '1' (length=1)
			 */
		
		 public function addCate($data){
//		 	var_dump($data);die;
		 	//将数据压入create方法中进行进行自动完成和自动验证
		 	if($this->create($data)){
		 		//先检测是否存在如果不存在那么再添加到数据库中
		 		$result = $this->where("cname='{$this->data['cname']}'")->find();
				if(!$result){
					$this->add($this->data);
					return true;
				}else{
					return false;
				}		
		 	}else{
		 		//如果添加数据失败直接返回错误失败原因
		 		return false;
		 	}
		 }
		
		
		/**
		 * 查询当前cid相应的内容
		 * @return array
		 */	
		 public function findCate($cid){
		 	$result = $this->where("cid={$cid}")->find();
			return $result;
		 }
		
		/**
		 * 递归找将父级分类的兄弟分类显示出来
		 * 再显示父级的父级分类  直到pid为0表示最终父级
		 */
//		 public function 
		
		
		/**
		 * 将所有的顶级分类查询出出来
		 */
		public function findTopCate(){
			$result = $this->where('pid=0')->all();
			return $result;
		}
		
		/**
		 * 删除分类
		 */
		 public function delCate($cid){
		 	//查询当前cid是否存在子分类
		 	$result = $this->findSonCate($cid);
			if(!empty($result)){
				return false;
			}else{
				$this->where("cid={$cid}")->del();
				return true;	
			}
				
		 }
		
		
		
		/**
		 * ajax请求查询当前分类下面的子分类
		 */
		 
		 public function findSonCate($cid){
		 	$result = $this->field('cid,cname,pid')->where("pid={$cid}")->all();
			return $result;
		 }
		 
		 /**
		  * 返回当前子级所有字段的数据
		  */
		  public function findAllSon($cid){
		  	$result = $this->where("pid={$cid}")->all();
			return $result;
		  }
		  
		  /**
		   * 查询所有的分类数据
		   */
		   public function allCate(){
		   		$result = $this->all();
		   		return $result;
		   }
		
		  /**
		   * 递归拿到所有分类下边的子分类的子分类的cid
		   */
		  public function resSonCate($data,$cid){
//		  		echo $cid;die;
		  		$arr = array();
				foreach($data as $d){
					if($d['pid'] == $cid){
						$arr[] = $d['cid'];
						$arr = array_merge($this->resSonCate($data, $d['cid']),$arr);
					}
					
				}
				return $arr;
		  }
		
		
	}
